package modelo;

import utilitarios.*;

public abstract class Tanque extends ObjetoDinamico {
	
    protected static double RESISTENCIA_INICIAL = 100;
    
	protected Arma arma;
	protected boolean debeDisparar = false;
	
	public Tanque(Escenario escenario) {
		super(escenario);
		this.resistencia = RESISTENCIA_INICIAL;
		this.figura = new Cuadrado(TAMANIO_PIXEL);
		this.direccion = new DireccionArriba(); //Inicialmente, esta mirando hacia arriba
		this.estaMoviendose = false;
	}
	
	public int getBalasRestantes() {
		return this.arma.cantidadBalas();
	}
	
	public Arma getArma() {
		return this.arma;
	}
	
	public double getVelocidadMovimiento() {
		return this.velocidadMovimiento;
	}
	
	public double getVelocidadDisparo() {
	    return this.getArma().getVelocidadDisparo();
	}
	
	public void disparara() {
		this.debeDisparar = true;
	}
	
	@Override
    protected abstract void morir();
		
	public void disparar() {
		PuntoXY bordeDelTanque = (this.getPosicion()).sumarPunto( (this.direccion.getVector()).productoEscalar( 2* (this.getFigura().getDistanciaAlBorde()) ) );
		(this.arma).disparar(bordeDelTanque, this.direccion);
	}
	
	public void girar(Direccion direccion) {
		this.direccion = direccion;
	}
	
}
